package Day_0207.Redis;

/**
 * @author zxc
 * @date 2023/02/07 23:18
 **/
public class Redis_Durability {
    public static void main(String[] args) {
        /**
         * Redis的持久化策略
         * ===》
         * 1.Redis是一个支持持久化的内存数据库，通过持久化机制，把内存中的数据同步到硬盘文件来保证数据持久化。
         * 当Redis重启后，通过把硬盘文件重新加载到内存，就能达到恢复数据的目的。
         *
         * 2.Redis持久化的实现：
         * （1）单独创建fork()一个子进程，将当前父进程的数据库数据复制到子进程的内存中，
         * （2）然后由子进程写入到临时文件中，持久化的过程结束了，
         * （3）再用这个临时文件替换上次的快照文件，然后子进程退出，内存释放。
         *
         * 3.Redis持久化策略 ：RDB && AOF
         * （1）RDB是Redis默认的持久化方式。
         * 按照一定的时间周期策略，把内存的数据以快照的形式保存到硬盘的二进制文件。
         * 即，Snapshot快照存储，对应产生的数据文件为dump.rdb，通过配置文件中的save参数来定义快照的周期。
         * （ 快照可以是其所表示的数据的一个副本，也可以是数据的一个复制品。）
         *
         * （2）AOF：
         * Redis会将每一个收到的写命令，都通过Write函数追加到文件最后，类似于MySQL的binlog。
         * 当Redis重启是会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。
         *
         * ===》
         * 总结 ；
         * 当Redis同时开启RDB && AOF持久化策略时，Redis会优先选择AOF进行数据恢复。
         *
         */
    }
}
